Programmable logic devices are in common use, in which an array of logic elements can be configured to perform a desired set of functions. Programmable logic devices have a number of inputs and outputs, and may also contain specialized memory blocks as well as other blocks having particular specialized functions, in addition to the array of logic elements. The connections between the logic elements of the array, and the connections between the logic elements and the other blocks of the programmable logic device, are then determined by configuration data.
That is, the configuration data may determine that certain specific logic elements of the array will operate together to perform a specific desired function.
Programmable logic devices are therefore widely used to implement complex electronic products. The designer of such a product needs to be able to test the effects of a set of configuration data during the design process. That is, the designer may produce a first set of configuration data, and will then need to test the functionality of the programmable logic device when configured by that set of configuration data. Depending on the results of the test, the designer will then be able either to modify or expand the set of configuration data, in order to modify or expand the resulting functionality.
It is becoming common to use a programmable logic device with an embedded processor. That is, some of the logic elements of the array are configured such that they form a microprocessor, which can then run software in a generally conventional way.
Thus, programmable logic devices available from Altera Corporation can be used to implement a microprocessor, which is available under the trademark Nios®.
It is also known that, in the case of a programmable logic device with an embedded processor, the processor can be used to debug the device during operation. That is, while a design implemented in the programmable logic device is in operation, the processor can stop the process and, for example, examine the contents of the registers which are in use. This information can then be used to test whether the device is operating as intended. If not, the configuration data can be modified, the design can be changed, and the test procedure can be carried out again.
However, implementing an embedded processor can use a significant proportion of the resources of the programmable logic device. Therefore, it can be disadvantageous to have to implement an embedded processor for testing and debugging purposes, when the design does not otherwise require that an embedded processor should be implemented.